import { observer } from 'mobx-react'
import { createContext, useContext } from 'react'
import UserStore from './modules/userStore'
import LayoutStore from './modules/layoutStore'

class RootStore {
  userStore: UserStore
  layoutStore: LayoutStore

  constructor () {
    this.userStore = new UserStore(this)
    this.layoutStore = new LayoutStore(this)
  }
}

const rootStore = new RootStore()

const StoreContext = createContext<RootStore>(rootStore)

const useStore = () => useContext(StoreContext)

export {
  rootStore,
  StoreContext,
  useStore,
  observer
}
